/**
 * 
 */
package compilador.analizadorSintactico.categoriasSintacticas;

import javax.swing.tree.DefaultMutableTreeNode;

/**
 * @author Nolberto Castellanos Rodriguez
 * @author Yurani Alejandra Salamanca Lotero
 *
 * Clase que representa una Expresion Relacional
 */
public class ExpresionRelacional {
	
//	-------------------------------------------------------------------------------------------------
//	ATRIBUTOS
//	-------------------------------------------------------------------------------------------------
	
	
	/**
	 *  Atributo que contiene el valor de la primera expresion aritmetica
	 */
	private ExpresionAritmetica expresionAritmetica1;
	
	/**
	 *  Atributo que contiene el valor del conector logico
	 */
	private ConectoresLogicos conectoresLogicos;
	
	/**
	 *	Atributo que contiene el valor de la segunda expresion aritmetica
	 */
	private ExpresionAritmetica expresionAritmetica2;
	
//	-------------------------------------------------------------------------------------------------
//	CONSTRUCTOR
//	-------------------------------------------------------------------------------------------------
	

	/**
	 * @param expresionAritmetica1
	 * @param conectoresLogicos
	 * @param expresionAritmetica2
	 */
	public ExpresionRelacional(ExpresionAritmetica expresionAritmetica1,
			ConectoresLogicos conectoresLogicos,
			ExpresionAritmetica expresionAritmetica2) {
		super();
		this.expresionAritmetica1 = expresionAritmetica1;
		this.conectoresLogicos = conectoresLogicos;
		this.expresionAritmetica2 = expresionAritmetica2;
	}

//	-------------------------------------------------------------------------------------------------
//	METODOS
//	-------------------------------------------------------------------------------------------------	
	
	/**
	 * Metodo que permite agregar hojas al nodo de la clase
	 * @return el nodo de la clase con sus hojas
	 */
	public  DefaultMutableTreeNode getArbolVisual(){
		DefaultMutableTreeNode miRaiz =  new  DefaultMutableTreeNode("Expresion Relacional");
		
		if(expresionAritmetica1!=null)
		{
			miRaiz.add(expresionAritmetica1.getArbolVisual());
		}
		if(conectoresLogicos!=null)
		{
			miRaiz.add(conectoresLogicos.getArbolVisual());
		}
		if(expresionAritmetica2!=null)
		{
			miRaiz.add(expresionAritmetica2.getArbolVisual());
		}
		
		return miRaiz;
	}
	
//	-------------------------------------------------------------------------------------------------
//	Getters and Setters
//	-------------------------------------------------------------------------------------------------
	
	
	/**
	 * Metodo que nos retorna el valor de expresionAritmetica1
	 * @return  expresionAritmetica1. Valor retornado
	 */
	public ExpresionAritmetica getExpresionAritmetica1() {
		return expresionAritmetica1;
	}

	/**
	 * Metodo que permite asignar el valor de expresionAritmetica1
	 * @param expresionAritmetica1. Valor a asignar expresionAritmetica1
	 */
	public void setExpresionAritmetica1(ExpresionAritmetica expresionAritmetica1) {
		this.expresionAritmetica1 = expresionAritmetica1;
	}

	/**
	 * Metodo que nos retorna el valor de conectoresLogicos
	 * @return  conectoresLogicos. Valor retornado
	 */
	public ConectoresLogicos getConectoresLogicos() {
		return conectoresLogicos;
	}

	/**
	 * Metodo que permite asignar el valor de conectoresLogicos
	 * @param conectoresLogicos. Valor a asignar conectoresLogicos
	 */
	public void setConectoresLogicos(ConectoresLogicos conectoresLogicos) {
		this.conectoresLogicos = conectoresLogicos;
	}

	/**
	 * Metodo que nos retorna el valor de expresionAritmetica2
	 * @return  expresionAritmetica2. Valor retornado
	 */
	public ExpresionAritmetica getExpresionAritmetica2() {
		return expresionAritmetica2;
	}

	/**
	 * Metodo que permite asignar el valor de expresionAritmetica2
	 * @param expresionAritmetica2. Valor a asignar expresionAritmetica2
	 */
	public void setExpresionAritmetica2(ExpresionAritmetica expresionAritmetica2) {
		this.expresionAritmetica2 = expresionAritmetica2;
	}

	/**
	 * @return
	 */
	public String getJavaCode() {
		String retornable = "(";
		
		if(expresionAritmetica1 != null)
			retornable += expresionAritmetica1.getJavaCode();
		
		if (conectoresLogicos != null) 
			retornable += " "+ conectoresLogicos.getConectorLogico().getConector().getLexema() +" ";
		
		if(expresionAritmetica2 != null)
			retornable += expresionAritmetica2.getJavaCode();
		
		return retornable+")";
	}
	
	
	
	

	

}
